module ext(immd,mode,immd16);
//  mode    ext
//  000     5->16   zero ext
//  001     5->16   sign ext
//  010     8->16   zero ext
//  011     8->16   sign ext
//  1xx     11->16  sign ext

    input   [10:0]  immd;
    input   [2:0]   mode;
    output  [15:0]  immd16;
    wire    low = 0;

    assign  immd16  =   (mode[2]==1)?{{6{immd[10]}},immd[9:0]}
                    :   (mode[1]==1)?{{8{((mode[0]==1)?immd[7]:low)}},immd[7:0]}
                    :   {{11{((mode[0]==1)?immd[4]:low)}},immd[4:0]};

endmodule
